/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gcs.Dados;
import gcs.Negocio.Utilizador;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Samuel
 */
public class UtilizadoresBD {
    
    Connection con;
    ConnDB c;

    public UtilizadoresBD(){
        con = new ConnDB().Connect();
    }


    public TreeMap<String,Utilizador> getUtil(){
        TreeMap<String,Utilizador> mc = new TreeMap<String,Utilizador>();
        Utilizador c;
        Statement st;
        try {
            st = con.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM Utilizadores");
            while (rs.next()){
                c = new Utilizador();
                c.setUser(rs.getString(1));
                c.setPass(rs.getString(2));
                c.setTipo(rs.getInt(3));
                c.setActivo(rs.getBoolean(4));
                mc.put(rs.getString(1),c);
            }
        }
        catch (SQLException ex) {
            Logger.getLogger(ConnDB.class.getName()).log(Level.SEVERE, null, ex);
        }
        return mc;
    }


    public Utilizador getUtil(String cod){
        Utilizador c = null ;
        Statement st;
        try {
            st = con.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM Utilizadores WHERE username = '"+cod+"'");
            if (rs.next()){
                c=new Utilizador();
                c.setUser(rs.getString(1));
                c.setPass(rs.getString(2));
                c.setTipo(rs.getInt(3));
                c.setActivo(rs.getBoolean(4));
                
            }
            //else
                //System.out.println("n existe");
        }
        catch (SQLException ex) {
            Logger.getLogger(ConnDB.class.getName()).log(Level.SEVERE, null, ex);
        }
        return c;
    }

    public boolean insereUtil(Utilizador u){
        Statement st;
        try {
            st = con.createStatement();
            String user = u.getUser();
            String pass = u.getPass();
            int tipo = u.getTipo();
            boolean activo = u.isActivo();
            st.executeUpdate("INSERT INTO Utilizadores " +
            "VALUES ('"+user+"','"+pass+"',"+tipo+","+activo+")");
        } catch (SQLException ex) {
            return false;
            //Logger.getLogger(UtilizadoresBD.class.getName()).log(Level.SEVERE, null, ex);
        }
        return true;
    }

    public boolean actUtil(Utilizador u){
        try {
            String sql = "UPDATE Utilizadores SET password = ?, tipo =?, activo = ? WHERE username = ?";
            PreparedStatement prest = con.prepareStatement(sql);
            prest.setString(1, u.getPass());
            prest.setInt(2,u.getTipo());
            prest.setBoolean(3, u.isActivo());
            prest.setString(4, u.getUser());
            prest.executeUpdate();
            //System.out.println("Updating Successfully!");
        } catch (SQLException ex) {
            Logger.getLogger(UtilizadoresBD.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
        return true;
    }

}
